﻿@{
    WebSecurity.RequireAuthenticatedUser();

    // Set the layout page and page title
    Layout = "~/_SiteLayout.cshtml";
    Page.Title = "パスワードの変更";

    bool isValid = true;
    bool isSuccess = false;
    var errorMessage = "";
    var currentPasswordError = "";
    var newPasswordError = "";
    var confirmPasswordError = "";
    var currentPassword = Request["currentPassword"];
    var newPassword = Request["newPassword"];
    var confirmPassword = Request["confirmPassword"];

    if (IsPost) {
        if (currentPassword.IsEmpty()) {
            currentPasswordError = "現在のパスワードを入力してください。";
            isValid = false;
        }
        if (newPassword.IsEmpty()) {
            newPasswordError = "新しいパスワードを入力してください。";
            isValid = false;
        }
        if (confirmPassword.IsEmpty()) {
            confirmPasswordError = "新しいパスワードを確認してください。";
            isValid = false;
        }
        if (confirmPassword != newPassword) {
            confirmPasswordError = "パスワードの確認で新しいパスワードが一致しません。";
            isValid = false;
        }

        if (isValid) {
            if (WebSecurity.ChangePassword(WebSecurity.CurrentUserName, currentPassword, newPassword)) {
                isSuccess = true;
            } else {
                errorMessage = "パスワードの変更中にエラーが発生しました。 サイトの所有者に連絡してください。";
            }
        } else {
            errorMessage = "パスワードの変更が失敗しました。 エラーを修正し、再試行してください。";
        }
    }
}

<form method="post" action="">
    <fieldset>
        <legend>パスワード変更のフォーム</legend>
        <p>
            パスワードを変更するには、このフォームを使用してください。 現在のパスワードを入力する必要があります。 
            パスワードを忘れた場合は、<a href="@Href("~/Account/ForgotPassword")" title="パスワードを忘れた場合のページ">ここをクリック</a>してください。
        </p>
        @if (isSuccess) {
            <p class="message success">
                パスワードが更新されました!
            </p>
        }
        @if (!errorMessage.IsEmpty()) {
            <p class="message error">
                @errorMessage
            </p>
        }
        <ol>
            <li class="current-password">
                <label for="currentPassword">現在のパスワード:</label>
                <input type="password" id="currentPassword" name="currentPassword" title="現在のパスワード" @if(!currentPasswordError.IsEmpty()){<text>class="error-field"</text>} />
                @if (!currentPasswordError.IsEmpty()) {
                    <label for="currentPassword" class="validation-error">@currentPasswordError</label>
                }
            </li>
            <li class="new-password">
                <label for="newPassword">New Password:</label> 
                <input type="password" id="newPassword" name="newPassword" title="新しいパスワード" @if(!newPasswordError.IsEmpty()){<text>class="error-field"</text>} />
                @if (!newPasswordError.IsEmpty()) {
                    <label for="newPassword" class="validation-error">@newPasswordError</label>
                }
            </li>
            <li class="confirm-password">
                <label for="confirmPassword">パスワードの確認入力:</label> 
                <input type="password" id="confirmPassword" name="confirmPassword" title="新しいパスワードの確認入力" @if(!confirmPasswordError.IsEmpty()){<text>class="error-field"</text>} />
                @if (!confirmPasswordError.IsEmpty()) {
                    <label for="confirmPassword" class="validation-error">@confirmPasswordError</label>
                }
            </li>
        </ol>
        <p class="form-actions">
            <input type="submit" value="パスワードの変更" title="パスワードの変更" />
        </p>
    </fieldset>
</form>

